<?php

class Import extends Admin_Controller
{

	public function __construct()
	{
		parent::__construct();

		$this->load->helper('file');
	}
	
	public function _do_upload()
	{
		$config['upload_path'] = sys_get_temp_dir() . '/';
        $config['allowed_types'] = 'txt|csv';
        $config['max_size'] = '1024';
        $config['encrypt_name'] = true;

        $this->load->library('upload', $config);

        if (!$this->upload->do_upload())
        {
        	$this->form_validation->set_message('_do_upload', $this->upload->display_errors());	
            return FALSE;
        }
		
		return TRUE;
	}	

	public function step1()
	{
		// FORM VALIDATION
		$this->load->library('form_validation');
		$this->form_validation->set_rules('group_id', 'Gurup ID', 'trim|required|numeric|callback__group_check|callback__do_upload');

		if ($this->form_validation->run() == FALSE)
		{
			// get subscriber groups
			$groups = dropdown_fromdb("SELECT id, name FROM _subscriber_group WHERE user_id = {$this->auth->uid()}");

			$data = array('groups' => $groups);

			$this->template->load('import/step1', $data);
		}
		else
		{
			$upload_data = $this->upload->data();
			
			// load and init import lib
			$options = array(
				'file_path' => $upload_data['full_path'],
				'group_id' => $this->input->post('group_id'),
				'user_id' => $this->auth->uid()
			);
			$this->load->library('import_lib', $options);
			
			
			$data = $this->import_lib 
				->extract() // dosyada bulunan dataları extract edelim
				->filter() // dataları filtreden geçirelim
				->insert_to_temp() // geçici tabloya aktarım yapalım
				->filter_on_db() // geçici tablodaki verileri filtreliyelim
				->insert_db() // kalıcı tabloya aktarım
				->create_report(); // rapor oluşturalım
			
			redirect("backend/subscriber/index");
		}
	}

	public function download_report()
	{

		$this->load->helper('download');

		force_download('iceri-aktarim-raporu.txt', read_file($this->session->userdata('report_file')));

	}
	
	/**
     * Kullanıcının farklı bir kullanıcının gurubuna veya olmayan bir guruba abone eklemesine karşı
     * söz konusu gurubun gerçekten var olduğu ve kullanıcıya ait olup olmadığını kontrol eder.
     *
     * @param int $group_id
     * @return bool
     */
	public function _group_check($group_id)
	{
    	$result = $this->db->where(array('id' => $group_id, 'user_id' => $this->auth->uid()))->count_all_results('subscriber_group');

		if (!$result)
		{
            $this->form_validation->set_message('_group_check', 'Böyle bir gurup yok!');
            return false;
        }

        return true;
    }	

}

/* End of file filename.php */
